//ajax请求统一入口
//xmlhttp：传入的XMLHttpRequest对象
//formdata：发送的表单数据
//url：请求的URL
//listener：请求成功时执行的函数
//reviver：json处理函数
function Request(method,formdata,url,listener,reviver){
//	请求中的动画
// 	var loading=$(Gm.loading);
// 	$("body").append(loading);
// 	// loading.find(".loaded").css({
// 	// 	top:(window.innerHeight-$(Gm.loading).find(".loaded")[0].height)/2+"px",
// 	// 	left:(window.innerWidth-$(Gm.loading).find(".loaded")[0].width)/2+"px"
// 	// });
//	***************防止重复提交处理

	if(window["net.xmlhttp"]==undefined) {
		window["net.xmlhttp"]= new XMLHttpRequest();
		xmlhttp = window["net.xmlhttp"];
	}else{
		return false;
	}
//  ****************
	xmlhttp.open(method,url);
	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
	xmlhttp.send("params="+formdata);
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState==4&&xmlhttp.status==200){
			try {
				var resultObject = JSONController(xmlhttp.responseText, reviver);
				listener(resultObject);
			}catch(e){
				throw "执行回调函数时报错："+e.message;
			}finally{
				window["net.xmlhttp"]=undefined;
				xmlhttp=undefined;
			}
		}else{
		}
		if(xmlhttp!=undefined&&xmlhttp.readyState==4) {
			window["net.xmlhttp"]=undefined;
			xmlhttp=undefined;
		}

	}
	return xmlhttp;
}

//附带文件上传时使用该方法
function MultiRequest(method,formdata,url,listener,reviver){
	var xmlhttp=new XMLHttpRequest();
	xmlhttp.open(method,url);
	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xmlhttp.send("params="+formdata);
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState==4&&xmlhttp.status==200){
			var resultObject=JSONController(xmlhttp.responseText,reviver);
			listener(resultObject);
		}else{
//		请求未完成时的一些处理
			console.log("请求呢");
		}
	}
	return xmlhttp;
}

//get的方式请求网络
function get(xmlhttp,url,listener){
	xmlhttp.open("get",url);
	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
	xmlhttp.setRequestHeader("Pragma","no-cache");  
	xmlhttp.setRequestHeader("Cache-Control","no-cache");  
	xmlhttp.send();
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState==4&&xmlhttp.status==200){
			console.log(xmlhttp.status);
			listener();
		}else{
			console.log("正在请求中。。。。。。。。");
		}
	}
}

//构建json 字符串参数
function formBuilder(params) {
	var formdata="";
	//对请求的参数进行拼接
	if(params.length!=1)
		for(var i=0;i<params.length;i++){
			if(formdata=="")
				formdata="\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"";
			else if(i!=params.length-1)
				formdata=formdata+","+"\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"";
			else
				formdata="{"+formdata+","+"\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\""+"}";
				
		}
	if(params.length==1){
		formdata="{"+"\""+params[0]+"\""+":"+"\""+getElem(params[0]).value.trim()+"\""+"}";
	}
	return formdata;
}
//构建包含jsonarray的json对象
//params普通参数
//arrayname json数组参数名
//jsonarray数组字符串
function aJsonBuilder(params,array,arrayname) {
	var formdata="";
	if(array==null)
		throw "formBuilder:array null exception";//不允许array参数为空
	//对请求的参数进行拼接
	if(params.length!=1)
		for(var i=0;i<params.length;i++){
			console.log(getElem(params[i]));
			if(formdata=="")
				formdata="\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"";
			else if(i!=params.length-1)
				formdata=formdata+","+"\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"";
			else
				formdata="{"+formdata+","+"\""+params[i]+"\""+":"+"\""+getElem(params[i]).value.trim()+"\""+","+"\""+arrayname+"\""+":"+array+"}";
	}
	if(params.length==1){
		formdata="{"+"\""+params[0]+"\""+":"+"\""+getElem(params[0]).value.trim()+"\""+","+"\""+arrayname+"\""+":"+array+"}";
	}
	return formdata;
}
//构造JSONArray
//dataname是input控件上自定义的数据名
//inputname是标签在array里的json键
function jsonArrayBuilder(params,dataName,inputname) {
	var formdata="";
	if(params.length!=1)
		for(var i=0;i<params.length;i++){
			var data=getElem(params[i]).dataset; //获取元素上的数据
			var dataValue=Object.keys(data);	//获取数据对象的属性名
			if(formdata==""){
				formdata="{\""+dataName+"\":\""+data[dataName]+"\""+","+"\""+inputname+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"}";
			}else if(i!=params.length-1){
				
				formdata=formdata+","+"{\""+dataName+"\":\""+data[dataName]+"\""+","+"\""+inputname+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"}";
			}else{
				
				formdata="["+formdata+","+"{\""+dataName+"\":\""+data[dataName]+"\""+","+"\""+inputname+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"}"+"]";
			}
	}
	if(params.length==1){
		formdata="["+"{\""+dataName+"\":\""+data[dataName]+"\""+","+"\""+inputname+"\""+":"+"\""+getElem(params[i]).value.trim()+"\"}"+"]";
	}
	return formdata;
}

//JSON处理器
function JSONController(json,reviver){
	var result=JSON.parse(json,reviver);
	return result;
}
